package org.example;

public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        ListNode listNode = new ListNode(2, new ListNode(3, new ListNode(4, new ListNode(5))));
        System.out.println(main.deleteNode(listNode,4));
    }


    public ListNode deleteNode(ListNode head, int val) {
        //  如果一来就找到了，那么删除头节点
        if(head.val == val) {
            return head.next;
        }
        // pre 用来记录当前节点的前一个节点,cur 用来记录当前节点
        ListNode pre = head, cur = head.next;
        //  遍历链表，直到找到要删除的节点
        // 当前节点不为空，并且和要寻找的值不相等
        while(cur != null && cur.val != val) {
            // 往下继续找
            pre = cur;
            cur = cur.next;
        }
        // 走到这里说明当前节点就是我们要找的节点
        if(cur != null) {
            // 将当前节点的下一个节点指向当前节点
            pre.next = cur.next;
        }
        // 这里包含找不到的时候，直接返回
        return head;
    }

}